package com.jdd.fintech.morse.plugin.ecrypts;

import com.jdd.fintech.morse.plugin.enums.EncrAndDecrAlgorithmTypeEnum;

import javax.crypto.spec.IvParameterSpec;

/**
 * SM4
 *
 * @author lvbiao8
 * @date 2021-01-06 15:35
 */
public class SM4 extends SymmetricCrypto{

    private static final long serialVersionUID = 1L;

    static final protected EncrAndDecrAlgorithmTypeEnum DEFAULT_ALGORITHM = EncrAndDecrAlgorithmTypeEnum.SM4;


    // ------------------------------------------------------------------------- Constructor start
    /**
     * 构造
     *
     * @param key     密钥，支持三种密钥长度：128、192、256 bit
     */
    public SM4(String key) {
        super(DEFAULT_ALGORITHM, null, key, 16, null);

    }

    /**
     * 构造
     *
     * @param mode    模式
     * @param padding 补码方式
     * @param key     密钥，支持三种密钥长度：128、192、256位
     * @param iv      加盐
     */
    public SM4(String mode, String padding, String key, Integer keyLength, IvParameterSpec iv) {
        super(DEFAULT_ALGORITHM,  String.format("%s/%s/%s", DEFAULT_ALGORITHM.getValue(), mode, padding), key, keyLength, iv);
    }
    // ------------------------------------------------------------------------- Constructor end

}
